home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1998…eptember: Technology Seed / September 98 ADC Seed CD.toast / FireWire 1.1 DR2 SDK / Source / OpenTransport / Interfaces / tihdr.h < prev   
Encoding:
C/C++ Source or Header  |  1998-01-15  |  13.1 KB  |  574 lines  |  [TEXT/MPS ]

  1. /** Copyright (c) 1992, 1993  Mentat Inc.
  2.  ** tihdr.h 4.3, last change 16 Feb 1994
  3.  **/
  4.  
  5. #ifndef _TIHDR_
  6. #define _TIHDR_
  7.  
  8. #ifndef __OPENTRANSPORT__
  9. #include <OpenTransport.h>
  10. #endif
  11.  
  12. #if PRAGMA_ALIGN_SUPPORTED
  13. #pragma options align=mac68k
  14. #endif
  15.  
  16. /* User generated requests */
  17. #define T_BIND_REQ                101
  18. #define T_CONN_REQ                102        /* connection request */
  19. #define T_CONN_RES                103        /* respond to connection indication */
  20. #define T_DATA_REQ                104
  21. #define T_DISCON_REQ            105
  22. #define T_EXDATA_REQ            106
  23. #define T_INFO_REQ                107
  24. #define T_OPTMGMT_REQ            108
  25. #define T_ORDREL_REQ            109
  26. #define T_UNBIND_REQ            110
  27. #define T_UNITDATA_REQ            111
  28. #define T_ADDR_REQ                112        /* Get address request                */
  29. #define T_UREQUEST_REQ            113        /* UnitRequest (transaction) req    */
  30. #define T_REQUEST_REQ            114        /* Request (CO transaction) req        */
  31. #define T_UREPLY_REQ            115        /* UnitRequest (transaction) req    */
  32. #define T_REPLY_REQ                116        /* REPLY (CO transaction) req        */
  33. #define T_CANCELREQUEST_REQ        117        /* Cancel outgoing request            */
  34. #define T_CANCELREPLY_REQ        118        /* Cancel incoming request            */
  35. #define T_REGNAME_REQ            119        /* Request name registration        */
  36. #define T_DELNAME_REQ            120        /* Request delete name registration */
  37. #define T_LKUPNAME_REQ            121        /* Request name lookup              */
  38.  
  39. /* Transport generated indications and acknowledgements */
  40. #define T_BIND_ACK                122
  41. #define T_CONN_CON                123        /* connection confirmation             */
  42. #define T_CONN_IND                124        /* incoming connection indication     */
  43. #define T_DATA_IND                125
  44. #define T_DISCON_IND            126
  45. #define T_ERROR_ACK             127
  46. #define T_EXDATA_IND            128
  47. #define T_INFO_ACK                129
  48. #define T_OK_ACK                130
  49. #define T_OPTMGMT_ACK            131
  50. #define T_ORDREL_IND            132
  51. #define T_UNITDATA_IND            133
  52. #define T_UDERROR_IND            134
  53. #define T_ADDR_ACK                135        /* Get address ack                    */
  54. #define T_UREQUEST_IND            136        /* UnitRequest (transaction) ind    */
  55. #define T_REQUEST_IND            137        /* Request (CO transaction) ind     */
  56. #define T_UREPLY_IND            138        /* Incoming unit reply                */
  57. #define T_REPLY_IND                139        /* Incoming reply                    */
  58. #define T_UREPLY_ACK            140        /* outgoing Unit Reply is complete    */
  59. #define T_REPLY_ACK                141        /* outgoing Reply is complete        */
  60. #define T_RESOLVEADDR_REQ        142
  61. #define T_RESOLVEADDR_ACK        143
  62.  
  63. #define T_LKUPNAME_CON            146        /* Results of name lookup           */
  64. #define T_LKUPNAME_RES            147        /* Partial results of name lookup    */
  65. #define T_REGNAME_ACK            148        /* Request name registration        */
  66. #define T_SEQUENCED_ACK            149        /* Sequenced version of OK or ERROR ACK */
  67.  
  68. #define T_EVENT_IND                160        /* Miscellaneous event Indication        */
  69.  
  70. /* State values */
  71. #define TS_UNBND                1
  72. #define TS_WACK_BREQ            2
  73. #define TS_WACK_UREQ            3
  74. #define TS_IDLE                 4
  75. #define TS_WACK_OPTREQ            5
  76. #define TS_WACK_CREQ            6
  77. #define TS_WCON_CREQ            7
  78. #define TS_WRES_CIND            8
  79. #define TS_WACK_CRES            9
  80. #define TS_DATA_XFER            10
  81. #define TS_WIND_ORDREL            11
  82. #define TS_WREQ_ORDREL            12
  83. #define TS_WACK_DREQ6            13
  84. #define TS_WACK_DREQ7            14
  85. #define TS_WACK_DREQ9            15
  86. #define TS_WACK_DREQ10            16
  87. #define TS_WACK_DREQ11            17
  88. #define TS_WACK_ORDREL            18
  89. #define TS_NOSTATES             19
  90. #define TS_BAD_STATE            19
  91.  
  92. /* Transport events */
  93. #define TE_OPENED                1
  94. #define TE_BIND                 2
  95. #define TE_OPTMGMT                3
  96. #define TE_UNBIND                4
  97. #define TE_CLOSED                5
  98. #define TE_CONNECT1             6
  99. #define TE_CONNECT2             7
  100. #define TE_ACCEPT1                8
  101. #define TE_ACCEPT2                9
  102. #define TE_ACCEPT3                10
  103. #define TE_SND                    11
  104. #define TE_SNDDIS1                12
  105. #define TE_SNDDIS2                13
  106. #define TE_SNDREL                14
  107. #define TE_SNDUDATA             15
  108. #define TE_LISTEN                16
  109. #define TE_RCVCONNECT            17
  110. #define TE_RCV                    18
  111. #define TE_RCVDIS1                19
  112. #define TE_RCVDIS2                20
  113. #define TE_RCVDIS3                21
  114. #define TE_RCVREL                22
  115. #define TE_RCVUDATA             23
  116. #define TE_RCVUDERR             24
  117. #define TE_PASS_CONN            25
  118. #define TE_BAD_EVENT            26
  119.  
  120. typedef struct T_addr_ack
  121. {
  122.     long    PRIM_type;        /* Always T_ADDR_ACK */
  123.     long    LOCADDR_length;
  124.     long    LOCADDR_offset;
  125.     long    REMADDR_length;
  126.     long    REMADDR_offset;
  127. } T_addr_ack;
  128.  
  129. typedef struct T_addr_req
  130. {
  131.     long    PRIM_type;        /* Always T_ADDR_REQ */
  132. } T_addr_req;
  133.  
  134. typedef struct T_bind_ack 
  135. {
  136.     long    PRIM_type;        /* always T_BIND_ACK */
  137.     long    ADDR_length;
  138.     long    ADDR_offset;
  139.     unsigned long    CONIND_number;
  140. } T_bind_ack;
  141.  
  142. typedef struct T_bind_req 
  143. {
  144.     long    PRIM_type;        /* always T_BIND_REQ */
  145.     long    ADDR_length;
  146.     long    ADDR_offset;
  147.     unsigned long    CONIND_number;
  148. } T_bind_req;
  149.  
  150. typedef struct T_conn_con 
  151. {
  152.     long    PRIM_type;        /* always T_CONN_CON */
  153.     long    RES_length;     /* responding address length */
  154.     long    RES_offset;
  155.     long    OPT_length;
  156.     long    OPT_offset;
  157. } T_conn_con;
  158.  
  159. typedef struct T_conn_ind 
  160. {
  161.     long    PRIM_type;        /* always T_CONN_IND */
  162.     long    SRC_length;
  163.     long    SRC_offset;
  164.     long    OPT_length;
  165.     long    OPT_offset;
  166.     long    SEQ_number;
  167. } T_conn_ind;
  168.  
  169. typedef struct T_conn_req 
  170. {
  171.     long    PRIM_type;        /* always T_CONN_REQ */
  172.     long    DEST_length;
  173.     long    DEST_offset;
  174.     long    OPT_length;
  175.     long    OPT_offset;
  176. } T_conn_req;
  177.  
  178. typedef struct T_conn_res 
  179. {
  180.     long    PRIM_type;        /* always T_CONN_RES */
  181.     struct queue* QUEUE_ptr;
  182.     long    OPT_length;
  183.     long    OPT_offset;
  184.     long    SEQ_number;
  185. } T_conn_res;
  186.  
  187. typedef struct T_data_ind 
  188. {
  189.     long    PRIM_type;        /* always T_DATA_IND */
  190.     long    MORE_flag;
  191. } T_data_ind;
  192.  
  193. typedef struct T_data_req 
  194. {
  195.     long    PRIM_type;        /* always T_DATA_REQ */
  196.     long    MORE_flag;
  197. } T_data_req;
  198.  
  199. typedef struct T_discon_ind 
  200. {
  201.     long    PRIM_type;        /* always T_DISCON_IND */
  202.     long    DISCON_reason;
  203.     long    SEQ_number;
  204. } T_discon_ind;
  205.  
  206. typedef struct T_discon_req 
  207. {
  208.     long    PRIM_type;        /* always T_DISCON_REQ */
  209.     long    SEQ_number;
  210. } T_discon_req;
  211.  
  212. typedef struct T_exdata_ind 
  213. {
  214.     long    PRIM_type;        /* always T_EXDATA_IND */
  215.     long    MORE_flag;
  216. } T_exdata_ind;
  217.  
  218. typedef struct T_exdata_req 
  219. {
  220.     long    PRIM_type;        /* always T_EXDATA_REQ */
  221.     long    MORE_flag;
  222. } T_exdata_req;
  223.  
  224. typedef struct T_error_ack 
  225. {
  226.     long    PRIM_type;        /* always T_ERROR_ACK */
  227.     long    ERROR_prim;     /* primitive in error */
  228.     long    TLI_error;
  229.     long    UNIX_error;
  230. } T_error_ack;
  231.  
  232. typedef struct T_info_ack 
  233. {
  234.     long    PRIM_type;        /* always T_INFO_ACK */
  235.     long    TSDU_size;        /* max TSDU size */
  236.     long    ETSDU_size;     /* max ETSDU size */
  237.     long    CDATA_size;     /* connect data size */
  238.     long    DDATA_size;     /* disconnect data size */
  239.     long    ADDR_size;        /* TSAP size */
  240.     long    OPT_size;        /* options size */
  241.     long    TIDU_size;        /* TIDU size */
  242.     long    SERV_type;        /* service type */
  243.     long    CURRENT_state;    /* current state */
  244.     long    PROVIDER_flag;    /* provider flags (see xti.h for defines) */
  245. } T_info_ack;
  246.  
  247. /* Provider flags */
  248. #define SENDZERO        0x001   /* supports 0-length TSDU's */
  249. #define XPG4_1          0x002   /* provider supports recent stuff */
  250.  
  251. typedef struct T_info_req 
  252. {
  253.     long    PRIM_type;        /* always T_INFO_REQ */
  254. } T_info_req;
  255.  
  256. typedef struct T_ok_ack 
  257. {
  258.     long    PRIM_type;        /* always T_OK_ACK */
  259.     long    CORRECT_prim;
  260. } T_ok_ack;
  261.  
  262. typedef struct T_optmgmt_ack 
  263. {
  264.     long    PRIM_type;        /* always T_OPTMGMT_ACK */
  265.     long    OPT_length;
  266.     long    OPT_offset;
  267.     long    MGMT_flags;
  268. } T_optmgmt_ack;
  269.  
  270. typedef struct T_optmgmt_req 
  271. {
  272.     long    PRIM_type;        /* always T_OPTMGMT_REQ */
  273.     long    OPT_length;
  274.     long    OPT_offset;
  275.     long    MGMT_flags;
  276. } T_optmgmt_req;
  277.  
  278. typedef struct T_ordrel_ind 
  279. {
  280.     long    PRIM_type;        /* always T_ORDREL_IND */
  281. } T_ordrel_ind;
  282.  
  283. typedef struct T_ordrel_req 
  284. {
  285.     long    PRIM_type;        /* always T_ORDREL_REQ */
  286. } T_ordrel_req;
  287.  
  288. typedef struct T_unbind_req 
  289. {
  290.     long    PRIM_type;        /* always T_UNBIND_REQ */
  291. } T_unbind_req;
  292.  
  293. typedef struct T_uderror_ind 
  294. {
  295.     long    PRIM_type;        /* always T_UDERROR_IND */
  296.     long    DEST_length;
  297.     long    DEST_offset;
  298.     long    OPT_length;
  299.     long    OPT_offset;
  300.     long    ERROR_type;
  301. } T_uderror_ind;
  302.  
  303. typedef struct T_unitdata_ind 
  304. {
  305.     long    PRIM_type;        /* always T_UNITDATA_IND */
  306.     long    SRC_length;
  307.     long    SRC_offset;
  308.     long    OPT_length;
  309.     long    OPT_offset;
  310. } T_unitdata_ind;
  311.  
  312. typedef struct T_unitdata_req 
  313. {
  314.     long    PRIM_type;        /* always T_UNITDATA_REQ */
  315.     long    DEST_length;
  316.     long    DEST_offset;
  317.     long    OPT_length;
  318.     long    OPT_offset;
  319. } T_unitdata_req;
  320.  
  321. typedef struct T_resolveaddr_ack 
  322. {
  323.     long    PRIM_type;        /* always T_RESOLVEADDR_ACK */
  324.     long    SEQ_number;
  325.     long    ADDR_length;
  326.     long    ADDR_offset;
  327.     long    ORIG_client;
  328.     long    ORIG_data;
  329.     long    TLI_error;
  330.     long    UNIX_error;
  331. } T_resolveaddr_ack;
  332.  
  333. typedef struct T_resolveaddr_req 
  334. {
  335.     long    PRIM_type;        /* always T_RESOLVEADDR_REQ */
  336.     long    SEQ_number;
  337.     long    ADDR_length;
  338.     long    ADDR_offset;
  339.     long    ORIG_client;
  340.     long    ORIG_data;
  341.     long    MAX_milliseconds;
  342. } T_resolveaddr_req;
  343.  
  344. typedef struct T_unitreply_ind
  345. {
  346.     long    PRIM_type;        /* Always T_UREPLY_IND */
  347.     long    SEQ_number;
  348.     long    OPT_length;
  349.     long    OPT_offset;
  350.     long    REP_flags;
  351.     long    TLI_error;
  352.     long    UNIX_error;
  353. } T_unitreply_ind;
  354.  
  355. typedef struct T_unitrequest_ind
  356. {
  357.     long    PRIM_type;        /* Always T_UREQUEST_IND */
  358.     long    SEQ_number;
  359.     long    SRC_length;
  360.     long    SRC_offset;
  361.     long    OPT_length;
  362.     long    OPT_offset;
  363.     long    REQ_flags;
  364. } T_unitrequest_ind;
  365.  
  366. typedef struct T_unitrequest_req
  367. {
  368.     long    PRIM_type;        /* Always T_UREQUEST_REQ */
  369.     long    SEQ_number;
  370.     long    DEST_length;
  371.     long    DEST_offset;
  372.     long    OPT_length;
  373.     long    OPT_offset;
  374.     long    REQ_flags;
  375. } T_unitrequest_req;
  376.  
  377. typedef struct T_unitreply_req
  378. {
  379.     long    PRIM_type;        /* Always T_UREPLY_REQ */
  380.     long    SEQ_number;
  381.     long    OPT_length;
  382.     long    OPT_offset;
  383.     long    REP_flags;
  384. } T_unitreply_req;
  385.  
  386. typedef struct T_unitreply_ack
  387. {
  388.     long    PRIM_type;        /* Always T_UREPLY_ACK */
  389.     long    SEQ_number;
  390.     long    TLI_error;
  391.     long    UNIX_error;
  392. } T_unitreply_ack;
  393.  
  394. typedef struct T_cancelrequest_req
  395. {
  396.     long    PRIM_type;        /* Always T_CANCELREQUEST_REQ */
  397.     long    SEQ_number;
  398. } T_cancelrequest_req;
  399.  
  400. typedef struct T_cancelreply_req
  401. {
  402.     long    PRIM_type;        /* Always T_CANCELREPLY_REQ */
  403.     long    SEQ_number;
  404. } T_cancelreply_req;
  405.  
  406. typedef struct T_reply_ind
  407. {
  408.     long    PRIM_type;        /* Always T_REPLY_IND */
  409.     long    SEQ_number;
  410.     long    OPT_length;
  411.     long    OPT_offset;
  412.     long    REP_flags;
  413.     long    TLI_error;
  414.     long    UNIX_error;
  415. } T_reply_ind;
  416.  
  417. typedef struct T_request_ind
  418. {
  419.     long    PRIM_type;        /* Always T_REQUEST_IND */
  420.     long    SEQ_number;
  421.     long    OPT_length;
  422.     long    OPT_offset;
  423.     long    REQ_flags;
  424. } T_request_ind;
  425.  
  426. typedef struct T_request_req
  427. {
  428.     long    PRIM_type;        /* Always T_REQUEST_REQ */
  429.     long    SEQ_number;
  430.     long    OPT_length;
  431.     long    OPT_offset;
  432.     long    REQ_flags;
  433. } T_request_req;
  434.  
  435. typedef struct T_reply_req
  436. {
  437.     long    PRIM_type;        /* Always T_REPLY_REQ */
  438.     long    SEQ_number;
  439.     long    OPT_length;
  440.     long    OPT_offset;
  441.     long    REP_flags;
  442. } T_reply_req;
  443.  
  444. typedef struct T_reply_ack
  445. {
  446.     long    PRIM_type;        /* Always T_REPLY_ACK */
  447.     long    SEQ_number;
  448.     long    TLI_error;
  449.     long    UNIX_error;
  450. } T_reply_ack;
  451.  
  452. typedef struct T_regname_req
  453. {
  454.     long    PRIM_type;        /* Always T_REGNAME_REQ */
  455.     long    SEQ_number;        /* Reply is sequence ack */
  456.     long    NAME_length;
  457.     long    NAME_offset;
  458.     long    ADDR_length;
  459.     long    ADDR_offset;
  460.     long    REQ_flags;
  461. } T_regname_req;
  462.  
  463. typedef struct T_regname_ack 
  464. {
  465.     long    PRIM_type;        /* always T_REGNAME_ACK        */
  466.     long    SEQ_number;
  467.     long    REG_id;
  468.     long    ADDR_length;
  469.     long    ADDR_offset;
  470. } T_regname_ack;
  471.  
  472. typedef struct T_delname_req
  473. {
  474.     long    PRIM_type;        /* Always T_DELNAME_REQ */
  475.     long    SEQ_number;        /* Reply is sequence ack */
  476.     long    NAME_length;
  477.     long    NAME_offset;
  478. } T_delname_req;
  479.  
  480. typedef struct T_lkupname_req
  481. {
  482.     long    PRIM_type;        /* Always T_LKUPNAME_REQ */
  483.     long    SEQ_number;        /* Reply is sequence ack */
  484.     long    NAME_length;    /* ... or T_LKUPNAME_CON */
  485.     long    NAME_offset;
  486.     long    ADDR_length;
  487.     long    ADDR_offset;
  488.     long    MAX_number;
  489.     long    MAX_milliseconds;
  490.     long    REQ_flags;
  491. } T_lkupname_req;
  492.  
  493. typedef struct T_lkupname_con 
  494. {
  495.     long    PRIM_type;        /* Either T_LKUPNAME_CON */
  496.     long    SEQ_number;        /* Or T_LKUPNAME_RES */
  497.     long    NAME_length;
  498.     long    NAME_offset;
  499.     long    RSP_count;
  500.     long    RSP_cumcount;
  501. } T_lkupname_con;
  502.  
  503. typedef struct T_sequence_ack 
  504. {
  505.     long    PRIM_type;        /* always T_SEQUENCED_ACK        */
  506.     long    ORIG_prim;         /* original primitive            */
  507.     long    SEQ_number;
  508.     long    TLI_error;
  509.     long    UNIX_error;
  510. } T_sequence_ack;
  511.  
  512. typedef struct T_event_ind 
  513. {
  514.     long    PRIM_type;        /* always T_EVENT_IND            */
  515.     long    EVENT_code;
  516.     long    EVENT_cookie;
  517. } T_event_ind;
  518.  
  519. union T_primitives 
  520. {
  521.     long                        type;
  522.     struct T_addr_ack            taddrack;
  523.     struct T_bind_ack            tbindack;
  524.     struct T_bind_req            tbindreq;
  525.     struct T_conn_con            tconncon;
  526.     struct T_conn_ind            tconnind;
  527.     struct T_conn_req            tconnreq;
  528.     struct T_conn_res            tconnres;
  529.     struct T_data_ind            tdataind;
  530.     struct T_data_req            tdatareq;
  531.     struct T_discon_ind         tdisconind;
  532.     struct T_discon_req         tdisconreq;
  533.     struct T_exdata_ind         texdataind;
  534.     struct T_exdata_req         texdatareq;
  535.     struct T_error_ack            terrorack;
  536.     struct T_info_ack            tinfoack;
  537.     struct T_info_req            tinforeq;
  538.     struct T_ok_ack             tokack;
  539.     struct T_optmgmt_ack        toptmgmtack;
  540.     struct T_optmgmt_req        toptmgmtreq;
  541.     struct T_ordrel_ind         tordrelind;
  542.     struct T_ordrel_req         tordrelreq;
  543.     struct T_unbind_req         tunbindreq;
  544.     struct T_uderror_ind        tuderrorind;
  545.     struct T_unitdata_ind        tunitdataind;
  546.     struct T_unitdata_req        tunitdatareq;
  547.     struct T_unitreply_ind        tunitreplyind;
  548.     struct T_unitrequest_ind    tunitrequestind;
  549.     struct T_unitrequest_req    tunitrequestreq;
  550.     struct T_unitreply_req        tunitreplyreq;
  551.     struct T_unitreply_ack        tunitreplyack;
  552.     struct T_reply_ind            treplyind;
  553.     struct T_request_ind        trequestind;
  554.     struct T_request_req        trequestreq;
  555.     struct T_reply_req            treplyreq;
  556.     struct T_reply_ack            treplyack;
  557.     struct T_cancelrequest_req    tcancelreqreq;
  558.     struct T_resolveaddr_req    tresolvereq;
  559.     struct T_resolveaddr_ack    tresolveack;
  560.     struct T_regname_req        tregnamereq;
  561.     struct T_regname_ack        tregnameack;
  562.     struct T_delname_req        tdelnamereq;
  563.     struct T_lkupname_req        tlkupnamereq;
  564.     struct T_lkupname_con        tlkupnamecon;
  565.     struct T_sequence_ack        tsequenceack;
  566.     struct T_event_ind            teventind;
  567. };
  568.  
  569. #if PRAGMA_ALIGN_SUPPORTED
  570. #pragma options align=reset
  571. #endif
  572.  
  573. #endif
  574.